#define _CRT_SECURE_NO_WARNINGS 1
#include<vector>
#include<iostream>
using namespace std;
//class Solution {
//public:
//    int minCostClimbingStairs(vector<int>& cost) {
//        int n = cost.size() + 1;
//        vector<int> dp[2];
//        dp[0] = cost[0];
//        if (cost.size() == 1)
//        {
//            return cost[0];
//        }
//        dp[1] = cost[1];
//        if (cost.size() == 2)
//        {
//            if (dp[0] > dp[1])
//            {
//                return dp[1];
//            }
//            else
//                return dp[0];
//        }
//        for (int i = 2; i <= cost.size(); i++)
//        {
//            if (dp[i - 2] + cost[i] > dp[i - 1] + cost[i])
//            {
//                dp[i] = dp[i - 1] + cost[i];
//            }
//            else
//                dp[i] = dp[i - 2] + cost[i];
//        }
//        return dp[cost.size()] > dp[cost.size() - 1] ? dp[cost.size()]:dp[cost.size() - 1];
//    }
//};

//class Solution {
//public:
//    int minCostClimbingStairs(vector<int>& cost) {
//        vector<int> dp;
//        dp.push_back(cost[0]);
//        if (cost.size() == 1)
//        {
//            return cost[0];
//        }
//        dp.push_back(cost[1]);
//        if (cost.size() == 2)
//        {
//            if (dp[0] > dp[1])
//            {
//                return dp[1];
//            }
//            else
//                return dp[0];
//        }
//        for (int i = 2; i <= cost.size(); i++)
//        {
//            if (i >= cost.size())
//            {
//                dp.push_back(dp[i - 2]);
//                break;
//            }
//            if (dp[i - 2] + cost[i] > dp[i - 1] + cost[i])
//            {
//                dp.push_back(dp[i - 1] + cost[i]);
//            }
//            else
//                dp.push_back(dp[i - 2] + cost[i]);
//        }
//        if (dp[cost.size()] > dp[cost.size() - 1])
//            return dp[cost.size() - 1];
//        return dp[cost.size()];
//    }
//};
int minCostClimbingStairs(vector<int>& cost) {
    int first = cost[0];
    if (cost.size() == 0)
    {
        return first;
    }
    int second = cost[1];
    if (cost.size() == 1)
    {
        return second;
    }
    for (int i = 2; i < cost.size(); i++)
    {
        int tmp = first;
        if (first + cost[i] > second + cost[i])
        {
            first = second;
            second = second + cost[i];
        }
        else
        {

            first = second;
            second = tmp + cost[i];
        }
    }
    if (first > second)
        return second;
    else
        return first;
}

int main()
{
    vector<int> v1{ 1,100,1,1,1,100,1,1,100,1 };
   
    minCostClimbingStairs(v1);
  


}